#pragma once
#include "IGameHandler.h"
#include "InitGameState.h"
#include "GameScreenPtr.h"

namespace ja2{ namespace sgp
{
	class VideoManager;
} /*sgp*/} /*ja2*/

namespace ja2
{
	class IGameStateDirector;

	//! Game handler for game initialization state.
	class InitGameHandler : public IGameHandler
	{
		// Attributes
	private:
		//! Video manager.
		sgp::VideoManager &m_VideoManager;
		//! Current init sub-screen.
		std::uint_least8_t m_SubScreen;
		//! State of init game.
		InitGameState m_InitState;
		//! Actual screen.
		GameScreenPtr_t m_pScreen;
		//! Game state director interface.
		IGameStateDirector &m_GameStateDirector;

		// Operations
	public:
		//! See base.
		virtual void process();

		// Construction/Destruction
	public:
		InitGameHandler(sgp::VideoManager &VideoManager, IGameStateDirector &GameStateDirector);
	};
} /*ja2*/
